home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / taropyon / znsplay / src / znsv02.c < prev   
C/C++ Source or Header  |  1993-11-30  |  2KB  |  85 lines

  1. /*************************************************************************
  2. *    UGOKUZANSU PLAYER
  3. *************************************************************************/
  4.  
  5. #include    <stdio.h>
  6. #include    <stdlib.h>
  7.  
  8. #include    <egb.h>
  9.  
  10. #include    <ugoku.h>
  11. #include    "znsplay.h"
  12.  
  13. static    v02_graph_init( int md, int xd, int yd )
  14. {
  15.     int        x, y;
  16.     FRAME    fr;
  17.  
  18.     if ( md < 1 )
  19.         md = 1;
  20.     else if ( md > 4 )
  21.         md = 4;
  22.  
  23.     x = 320/md - xd/2;
  24.     if( x < 0 )        x = 0;
  25.  
  26.     y = 240/md - yd/2;
  27.     if( y < 0 )        y = 0;
  28.  
  29.     ZNS_cls();
  30.     if ( DspCtrl.page0 != 5 )
  31.     {
  32.         EGB_resolution(EgbPtr,0,5);
  33.         DspCtrl.page0       = 5;
  34.         DspCtrl.scinf[0].md = 5;
  35.         EGB_displayPage(EgbPtr,1,3);
  36.         page1_palette();
  37.     }
  38.  
  39.     DSP_writePage(0);
  40.     ZNS_displayStart(2,md,md);    /* 画面の拡大            */
  41.     ZNS_displayStart(3,xd,yd);    /* 表示画面の大きさ        */
  42.     ZNS_displayStart(0, x, y);    /* 画面の表示開始位置    */
  43.     ZNS_displayStart(1, 0, 0);
  44.  
  45.     fr.x1 = x * md;
  46.     fr.y1 = y * md;
  47.     fr.x2 = (x + xd) * md - 1;
  48.     fr.y2 = (y + yd) * md - 1;
  49.     ZNS_frame( &fr );
  50.  
  51.     return (0);
  52. }
  53.  
  54. int        zns_play_v02( ZNSMOVE_T *znsmove )
  55. {
  56.     int        xd, yd, size, frame, error;
  57.     char    *buffer;
  58.  
  59.     if ( znsmove->mode == ZNS_MODE_MEMORY )
  60.     {
  61.         error = V02_memory_play_init(
  62.             znsmove->filename, ZnsNextCheck, &frame, &xd, &yd, &size );
  63.     } else
  64.     {
  65.         error = V02_disk_play_init(
  66.             znsmove->filename, ZnsNextCheck, &frame, &xd, &yd, &size );
  67.     }
  68.     if ( error )    return (error);
  69.  
  70.     error = v02_graph_init( znsmove->expand, xd, yd );
  71.     if( error )        return error;
  72.  
  73.     if ( (buffer = malloc( size )) == NULL )
  74.         return 7;
  75.  
  76.     if ( znsmove->mode == ZNS_MODE_MEMORY )
  77.         error = V02_memory_play( buffer, znsmove->filename, 0, znsmove->wait );
  78.     else
  79.         error = V02_disk_play  ( buffer, znsmove->filename, 0, znsmove->wait );
  80.  
  81.     free( buffer );
  82.  
  83.     return (error);
  84. }
  85.